#1,添加cmake版本说明
cmake_minimum_required(VERSION 3.1.3)

#2,声明工程名称
project(odb-test)

# 3,检测并生成ODB框架代码
    #  a. 添加所需要的odb映射代码文件名称  CMAKE_CURRENT_SOURCE_DIR--CMakeLists.txt文件所在的路径
set(odb_path ${CMAKE_CURRENT_SOURCE_DIR}/entity)
set(odb_files student.hxx)
    #  b. 检测框架代码文件是否已经生成
set(odb_hxx "")
set(odb_cxx "")
set(odb_srcs "")


foreach(odb_file odb_files)
    #  c. 如果没有生成，则预定义生成指令 -- 用于在构建项目之前先生成框架代码 (判断有没有生成student-odb.hxx student-odb.cxx)
    string(replace ".hxx" "-odb.hxx" odb_hxx ${odb_file}) # string(REPLACE ".old" ".new" dest src)
    string(replace ".hxx" "-odb.cxx" odb_cxx ${odb_file})
    if(not exists ${CMAKE_CURRENT_BINARY_DIR}${odb_file}) #执行cmake指令所存在的路径
        add_custom_command(
            PRE_BUILD
            COMMAND odb #要执行的指令
            ARGS -d mysql --std c++11 --generate-query --generate-schema --profile boost/date-time ${odb_path}/${odb_file}
            DEPENDS ${odb_path}/${odb_cxx}
            OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${odb_cxx}
            COMMENT "生成ODB框架代码文件: " ${CMAKE_CURRENT_BINARY_DIR}/${odb_cxx}
        )
    #d. 将生成所有的框架源码文件名称保存起来
    endif()
    list(APPEND odb_srcs ${CMAKE_CURRENT_BINARY_DIR}/${odb_cxx})
endforeach()
#4,获取源码目录下的所有源码文件
set(src_files "")
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/source src_files)
#5,声明目标及依赖,
add_executable(main ${src_files} ${odb_srcs})
#6,设置头文件默认的搜索路径
include_directories()
#7,设置需要链接的库



